//
//  ILLocalAPIs.h.h
//  IMILabKit
//  存放通信协议相关api api ,此api 推荐放在业务层进行管理，方便后续的扩展
//  Created by sunhongda on 2022/10/27.
//

#import <Foundation/Foundation.h>


static  NSString * IL_CMD_MSG_REQ_BASE =@"{\"header\":%d,\"cmd\":%d,\"id\":%d,\"data_len\":%d,\"crc\":%d,\"data\":{%@}}";
static  NSString * IL_CMD_MSG_RESP_BASE =@"{\"id\":%d,\"cmd\":%d,\"code\":%d,\"message\":%@,\"result\":%@}";
 

static  NSString * IL_MD_MSG_REQ_EXT_QUALITY=@"\"quality\":%d";

@interface ILLocalAPIs : NSObject

///---------------- bind ------------------------

/// 开始绑定
+ (NSString *) createStartBindData;

/// 停止绑定
+ (NSString *)createStopBindData;

///--------------- -live ------------------------

/// 开始播放
+ (NSString *)createStartPlayData;

/// 停止播放
+ (NSString *)createStopPlayData;

///---------------- playback ------------------------
 
/// 开始回看数据构造
/// @param startTime  开始时间 单位 ms
/// @param endTime   结束时间 单位 ms
/// @param offset    以开始时间的偏移时间 单位 s
/// @return 组装好的发送数据
+ (NSString *)createStartPlaybackData:( NSNumber *) startTime endTime:(NSNumber *) endTime offset:(NSInteger ) offset;

/// 停止当前回看播放
/// @return  组装好的发送数据
+ (NSString *)createStopPlaybackData;

///创建一个倍速的数据
/// @param speed  当前设置的倍速，例如 0 2 4 6 8 16  具体支持多少倍数需要通设备端确认
/// @return 组装好的发送数据
+ (NSString *)createSpeedData:(NSInteger) speed;

/// 控制快进指令
/// @param seekMS  以播放时的startTime 进行传入快进的ms
/// @return 组装好的发送数据
+ (NSString *)createSeekData:( NSNumber *) seekMS;

/// 获取月列表
/// @param month 传入年份月份
/// @return 组装好的发送数据
+ (NSString *)createMonthData:( NSString *) month;
/// 获取月列表
/// @param startTime  开始时间 单位 ms
/// @param endTime   结束时间 单位 ms
/// @return 组装好的发送数据
+ (NSString *)createDayData:( NSNumber *) startTime endTime:(NSNumber *) endTime;


+ (NSString *)createStartTalkData;
+ (NSString *)createStopTalkData;



///---------------- 通用控制协议 ------------------------

/// 通用的控制协议指令，例如 控制设备、设置设备功能（代替物模型、设备服务调用）等功能
/// @param reqMode （物模型、服务类型）
/// @param identifier 约定好的标识符 （物模型、服务）
/// @param params 约定好的参数 例如 ： { "key1":value:2  }
/// @return 组装好的发送数据
+ (NSString *)createCommonCmdData:(NSString *)reqMode identifier:( NSString *) identifier params:(NSString *) params;
/// 通用的控制协议指令，例如 控制设备、设置设备功能（代替物模型、设备服务调用）等功能
/// @param cmd 指令
/// @param reqMode （物模型、服务类型）
/// @param identifier 约定好的标识符 （物模型、服务）
/// @param params 约定好的参数 例如 ： { "key1":value:2  }
/// @return 组装好的发送数据
+ (NSString *)createCommonCmdData:(NSString *)reqMode cmd:(NSInteger)cmd identifier:( NSString *) identifier params:(NSString *) params;
///
///响应数据结构
+ (NSString *)formatRespData:(NSInteger) Id cmd:(NSInteger ) cmd  result:(NSString *) result;

/// 包装了基本的消息头
+ (NSString *)formatReqData:(NSInteger)  cmd dataLen:(NSUInteger) dataLen data:(NSString *) data;
    
@end


